//index.js
//获取应用实例
const app = getApp()

Page({
  data: {
    openId:null
  },
  onLoad: function () {
    // 获取当前日期时间 YYYY-MM-DD hh:mm:ss
    console.log('当前时间为' + new Date().toJSON().substring(0, 10) + ' ' + new Date().toTimeString().substring(0, 8));
    wx.login({
      success: (res) => {
        console.log(res)
        if (res.code) {
          // 提示用户正在获取openId
          wx.showToast({
            title: '正在获取openId',
            icon: 'loading',
            duration: 10000 // 不自动消失
          });
          
          // 向微信官方接口发起网络请求获取openId
          wx.request({
            url: 'https://api.weixin.qq.com/sns/jscode2session',
            data: {
              appid: '', // 小程序appid
              secret: '', // 小程序secret
              js_code: res.code,
              grant_type: 'authorization_code'
            },
            success: (result) => {
              if (result.data.openid) {
                console.log('获取到的openId：', result.data.openid);
                // 将openId存储到全局变量或本地存储中，方便后续使用
                wx.setStorageSync('openId', result.data.openid);
                wx.showToast({
                  title: '获取openId成功',
                  icon: 'success',
                  duration: 2000
                });
              } else {
                wx.showToast({
                  title: '获取openId失败',
                  icon: 'none',
                  duration: 2000
                });
                console.error('获取openId失败：', result.data.errmsg);
              }
            },
            fail: (err) => {
              wx.showToast({
                title: '网络请求失败',
                icon: 'none',
                duration: 2000
              });
              console.error('请求失败：', err);
            }
          });
        } else {
          wx.showToast({
            title: '登录失败',
            icon: 'none',
            duration: 2000
          });
          console.error('登录失败：', res.errMsg);
        }
      },
      fail: (err) => {
        wx.showToast({
          title: '登录调用失败',
          icon: 'none',
          duration: 2000
        });
        console.error('wx.login调用失败：', err);
      }
    });
  },
 

  toPay() {
    let body = "演示";
    let money = '0.01';
    let openId = wx.getStorageSync('openId');
    
    // 显示加载
    wx.showLoading({
      title: '加载中...',
    });
    
    // 注意：这里的URL需要改为真实的可访问服务器地址
    // 真机无法访问127.0.0.1或localhost，这是本地回环地址
    wx.request({
      // url: 'http://47.113.179.90:8080/WxPay/miniPay',
      url: 'http://localhost:8090/WxPay/miniPay',
      method: 'GET', // 确保和后端接口方法匹配
      data: {
        body: body,
        money: money,
        openId: openId
      },
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      success: (res) => {
        wx.hideLoading(); // 关闭加载提示
        // 获取当前日期时间 YYYY-MM-DD hh:mm:ss
        console.log('当前时间为' + new Date().toJSON().substring(0, 10) + ' ' + new Date().toTimeString().substring(0, 8));
        console.log('支付返回参数:', res.data);
        
        // 检查返回结果结构
          const payParams = res.data.data;
          
          // 确保所有必需参数都存在
          if (payParams.timeStamp && payParams.nonceStr && 
              payParams.package && payParams.signType && payParams.paySign) {
            
            // 调起微信支付
            wx.requestPayment({
              timeStamp: payParams.timeStamp,
              nonceStr: payParams.nonceStr,
              package: payParams.package,
              signType: payParams.signType,
              paySign: payParams.paySign,
              success: (payRes) => {
                // 获取当前日期时间 YYYY-MM-DD hh:mm:ss
                console.log('当前时间为' + new Date().toJSON().substring(0, 10) + ' ' + new Date().toTimeString().substring(0, 8));
                console.log('支付成功', payRes);
                wx.showToast({
                  title: '支付成功',
                  icon: 'success',
                  duration: 2000
                });
              },
              fail: (payErr) => {
                console.log('支付失败', payErr);
                wx.showToast({
                  title: payErr.errMsg === 'requestPayment:fail cancel' ? 
                    '支付已取消' : '支付失败',
                  icon: 'none',
                  duration: 2000
                });
              }
            });
          } else {
            wx.showToast({
              title: '支付参数不完整',
              icon: 'none',
              duration: 2000
            });
            console.error('缺少支付参数:', payParams);
          }
      }
    });
  }

})
